#!/usr/bin/env ruby # -*- coding: utf-8 -*- module QUESTION def question(choices,mold="moji",item="off") kaisu = 0 select = nil if mold == "hyozi" while kaisu < choices.length print("#{choices[kaisu]}\e[m#{item=="off" ? " ": "\n" }") kaisu += 1 end else while kaisu < choices.length print("(#{kaisu+1})#{choices[kaisu]}\e[m#{item=="off" ? " ": "\n" }") kaisu += 1 end end print item=="off" ? "\n" : "" while select.nil? || select > choices.length || select < -choices.length #回答の仕分け print("選択:") select = gets.chomp if select == "exit" exit end if select == "" || number_check(select) == false || select.to_i > choices.length || select.to_i < -choices.length print"\e[1F\e[1M" redo end select = select.to_i end if mold == "moji" if select==0 return choices[0] end return choices[select > 0 ? select-1 : select] elsif mold == "suji" return select else puts"questionメソッドでバグ" end end def question_number n=nil while true print"数:" n =gets.chomp if number_check(n) return n.to_i end end end def number_check(h) if h.length>1 && h[0]=="0" return false end if h[0]=="-" h=h[1..] end number = ["1","2","3","4","5","6","6","7","8","9","0"] x = h.split("") n = 0 for i in x if false == number.include?(x[n]) return false end n += 1 end return true end def show_hash(raw,mold="string") if raw.class != Hash p"Module_RPG_Tool.rbのshow_hashでHash以外のデータを検出" end data=[] k=raw.keys v=raw.values if raw.length==1 return k[0]+":"+v[0].to_s else raw.length.times do |n| data<<[k[n],v[n]] end end data.length.times do |n| data[n]=data[n][0]+":"+data[n][1].to_s end if mold=="string" data=data.join(" ") end return data end def number_change(data,mold="change") if data.nil? || (not data.instance_of?(String)) return data end if data[0] == "-" x = data[1..] else x=data end if number_check(x) return data.to_i elsif mold=="change" return data else return false end end def upper_limit_check(data,limit,change=nil) if data <= limit return data else if change != nil return change end return false end end def lower_limit_check(data,limit,change=nil) if data >= limit return data else if change != nil return change end return false end end def number_range_check(data,lower_limit,upper_limit,change=nil) if data.between?(lower_limit,upper_limit) return data else if change != nil return change end return false end end def search(data,ward) for i in ward if data.include?(i) return true end end return false end def count_data(raw) data={} x=raw.dup while x.length >0 y=x.shift data[y]=raw.count(y) end return data end def alphabets_getter(mold="list") case mold when "list" return ["small","large","girisha_small","girisha_large","phonetic"] when "small" return ("a".."z").to_a when "large" return ("A".."Z").to_a when "girisha_small" return ["α","β","γ","δ","ε","ζ","η","θ","ι","κ","λ","μ","ν","ξ","ο","π","ρ","σ","τ","υ","φ","χ","ψ","ω"] when "girisha_large" return ["Α","Β","Γ","Δ","Ε","Ζ","Η","Θ","Ι","Κ","Λ","Μ","Ν","Ξ","Ο","Π","Ρ","Σ","Τ","Υ","Φ","Χ","Ψ","Ω"] when "phonetic" return ["アルファ","ブラボー","チャーリー","デルタ","エコー","フォックスロット","ゴルフ","ホテル","インディア","ジュリエット","キロ","リマ","マイク","ノベンバー","オスカー","パパ","ケペック","ロミオ","シエラ","タンゴ","ユニフォーム","ビクター","ウィスキー","エックスレイ","ヤンキー","ズールー"] else p"alphabets_getterでerror" end end def numbering(num,mark) num+=1 i=num.to_s(mark.length).split("") i.length.times do |n| i[n].to_i(mark.length) i[n]=mark[i[n].to_i(mark.length)-1] end return i.join("") end def ratio_simplify(data) answer=data.inject(:gcd) data.length.times do |n| data[n]=data[n]/answer end return data end def hash_roulette(raw) y=[] for i in raw y << i[-1] end divisor=y.inject(:gcd) z=[] for i in raw z << [i[0],i[1]/divisor] end data=[] for i in z data << i[0]*i[1] end return data.sample end def number_of(raw) if raw.class!=Hash p"number_ofの引数がHashではありません" end data=[] for i in raw.to_a data<< i[0]+"*"+i[1].to_s end return data end def talk(story) print"\e[2J\e[0;0H" for i in story puts i+"\e[0;5m▼" print("\e[m") gets print"\e[2J\e[0;0H" end end end